抽象操作並不是語言的一部分,它們存在的目的是協助 ECMAScript 規範定義語言實踐的細節,類似於語言中的方法,如 Array.prototype.find(),抽象操作僅在規範中被使用。
語言會根據需要進行自動型別轉換。為了澄清某些構造的語義,定義一組轉換抽象操作是有用的。轉換抽象操作是多態的;它們可以接受任何ECMAScript語言類型的值。但是,這些操作不與其他規範類型一起使用。
抽象操作 ToPrimitive 接受參數 input(一個 ECMAScript 語言值)和可選參數 preferredType(字符串或數字),並返回包含 ECMAScript 語言值的正常完成或拋出完成。它將其輸入參數轉換為非物件類型。如果對象能夠轉換為多個原始類型,則可以使用可選提示 preferredType 來優先考慮該類型。